package com.yuandian.customer.perception.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuandian.api.customer_perception.po.OperatorResolutionParams;
import com.yuandian.api.customer_perception.vo.*;
import com.yuandian.po.MultipleTableInfo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <p> 操作员mapper接口 </p>
 *
 * @Author: LinSheHi
 * @Date: 2021/8/16 10:03
 */
@Repository
public interface OperatorResolutionMapper {

    /**
     * 客户感知-操作员分析-业务办理列表
     * @param params 请求参数
     * @param visitTables	数据表
     * @return 通用返回对象
     */
    List<OperatorResolutionListVo> queryBusinessProcessList(Page<OperatorResolutionListVo> page,
															@Param("params") OperatorResolutionParams params,
															@Param("visitTables") List<MultipleTableInfo> visitTables);

    /**
     * 客户感知-操作员分析-业务办理列表下载
     * @param params 请求参数
     * @param visitTables	数据表
     * @return 通用返回对象
     */
    List<OperatorResolutionListVo> queryBusinessProcessListExport(@Param("params") OperatorResolutionParams params,
                                                                  @Param("visitTables") List<MultipleTableInfo> visitTables);

    /**
     * 客户感知-操作员分析-办理业务统计列表
     * @param params 请求参数
     * @param visitTables	数据表
     * @return 通用返回对象
     */
    List<OperatorStatisticsListVo> queryBusinessProcessStatisticsList(Page<OperatorStatisticsListVo> page, @Param("params") OperatorResolutionParams params,
																	  @Param("visitTables") List<MultipleTableInfo> visitTables);

    /**
     * 客户感知-操作员分析-办理业务统计列表下载
     * @param params 请求参数
     * @param visitTables	数据表
     * @return 通用返回对象
     */
    List<OperatorStatisticsListVo> queryBusinessProcessStatisticsListExport(@Param("params") OperatorResolutionParams params,
                                                                            @Param("visitTables") List<MultipleTableInfo> visitTables);

    /**
     * 客户感知-操作员分析-操作员业务办理量
     * @param params 请求参数
     * @param visitTables	数据表
     * @return 通用返回对象
     */
    List<OperatorCompleteCountVo> queryOperatorBusinessProcessCount(@Param("params") OperatorResolutionParams params,
																	@Param("visitTables") List<MultipleTableInfo> visitTables);

    /**
     * 客户感知-操作员分析-操作员人工操作平均耗时
     * @param params 请求参数
     * @param visitTables	数据表
     * @return 通用返回对象
     */
    List<OperatorAvgDealTimeVo> queryOperatorAvgDealTime(@Param("params") OperatorResolutionParams params,
														 @Param("visitTables") List<MultipleTableInfo> visitTables);

    /**
     * 客户感知-操作员分析-操作员办理业务分布图
     * @param params 请求参数
     * @param visitTables	数据表
     * @return 通用返回对象
     */
    List<OperatorCompleteCountVo> queryOperatorBusinessPercent(@Param("params") OperatorResolutionParams params,
                                                               @Param("visitTables") List<MultipleTableInfo> visitTables);

    /**
     * 客户感知-操作员分析-操作员办理业务告警类型
     * @param params 请求参数
     * @param visitTables	数据表
     * @return 通用返回对象
     */
    List<OperatorAlarmTypeCountVo> queryOperatorAlarmTypeCount(@Param("params") OperatorResolutionParams params,
															   @Param("visitTables") List<MultipleTableInfo> visitTables);


    /**
     * 客户感知-操作员分析-操作员办理业务平均耗时趋势图
     * @param params 请求参数
     * @return 通用返回对象
     */
    List<OperatorLineVo> queryOperatorBusinessAvgVisitTime(@Param("params") OperatorResolutionParams params);


    /**
     * 客户感知-操作员分析-操作员办理X业务趋势图
     * @param params 请求参数
     * @return 通用返回对象
     */
    List<OperatorLineVo> queryOperatorBusinessLine(@Param("params") OperatorResolutionParams params);


    /**
     * 客户感知-操作员分析-根据查询条件查询某业务员操作过的所有系统
     * @param params 请求参数
     * @param visitTables	数据表
     * @return 通用返回对象
     */
    List<Map<Integer, String>> querySystemListByOperator(@Param("params") OperatorResolutionParams params,
                                                         @Param("visitTables") List<MultipleTableInfo> visitTables);

    /**
     * 客户感知-操作员分析-根据查询条件查询某业务员操作过的所有业务
     * @param params 请求参数
     * @return 通用返回对象
     */
    List<Map<String, String>> queryBusinessListByOperator(@Param("params") OperatorResolutionParams params,
                                                         @Param("visitTables") List<MultipleTableInfo> visitTables);

	/**
	 *	业务办理明细列表
	 * @param page		分页参数
	 * @param params	请求参数
	 * @param tableName	表名
	 * @return
	 */
	List<OperatorBusiDetailListVo> queryBusinessProcessDetailList(Page<OperatorBusiDetailListVo> page,
																  @Param("params") OperatorResolutionParams params,
																  @Param("tableName") String tableName);
}
